#ifndef Self_Defined_Functions
#define Self_Defined_Functions


#include "./CEC2010/Header.h"
#include <stdio.h>
#include <math.h>
#include <boost/random.hpp>
#include <boost/random/uniform_int.hpp>
#include <boost/random/cauchy_distribution.hpp>
#include <boost/random/normal_distribution.hpp>
#include <boost/random/uniform_real.hpp>
#include <sys/time.h>
#include <cstdio>
#include <unistd.h>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <iomanip>
#include <string>
#include <time.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <map>


using namespace std;

const int dim = 1000; // the dimension size
const int MaxFEs= 3000*dim; // the maximum number of fitness evaluations
const int populationsize = 800; // the population size
const int timesOfRun = 30;

struct NewType
{
    double data;
    int id;
};

Benchmarks* generateFuncObj(int funcID);

int initialization(double **p,double **v,Benchmarks *fp);

void Fitness_Computation( double *results, double **population, int &gbest, int num, int dim, int &FEs, Benchmarks* fp );

bool Compare_NewType( NewType data1, NewType data2 );





#endif
